﻿using Windows.UI.Xaml;

namespace Uhimania.Libraries.Windows.Interactivity
{
    #region Behavior
    /// <summary>
    /// 状態情報および 0 以上の ICommands をアタッチ可能なオブジェクトにカプセル化する。
    /// </summary>
    public abstract class Behavior : AttachedObjectBase
    {
    }
    #endregion

    #region Behavior<T>
    /// <summary>
    /// 状態情報および 0 以上の ICommands をアタッチ可能なオブジェクトにカプセル化する。
    /// </summary>
    /// <typeparam name="T"><see cref="Behavior" /> をアタッチできる型。</typeparam>
    public abstract class Behavior<T> : Behavior
        where T : DependencyObject
    {
        #region AssociatedObject
        /// <summary>
        /// この <see cref="Behavior" /> がアタッチされるオブジェクトを取得する。
        /// </summary>
        public new T AssociatedObject
        {
            get { return base.AssociatedObject as T; }
        }
        #endregion
    }
    #endregion
}
